package com.evan.review.viewpager;

import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import com.evan.review.R;

/**
 * 视频Feed示例活动 - 模拟类似抖音/TikTok的垂直滑动视频流
 */
public class VideoFeedActivity extends AppCompatActivity {
    
    private static final String TAG = "VideoFeedActivity";
    private static final int VIDEO_COUNT = 5; // 视频总数
    
    private ViewPager2 viewPager; // ViewPager2控件
    private TextView tvPosition; // 显示当前视频位置的文本视图
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_feed);
        
        // 初始化视图
        viewPager = findViewById(R.id.viewpager);
        tvPosition = findViewById(R.id.tv_position);
        
        // 设置视频Feed
        setupVideoFeed();
    }
    
    /**
     * 设置视频Feed的ViewPager2及其适配器
     */
    private void setupVideoFeed() {
        // 创建并设置适配器
        VideoFeedAdapter adapter = new VideoFeedAdapter(this);
        viewPager.setAdapter(adapter);
        
        // 设置为垂直方向滑动 - 这是抖音/TikTok风格的关键
        viewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
        
        // 注册页面切换回调
        viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                // 更新显示的视频位置信息
                tvPosition.setText("视频 " + (position + 1) + " / " + VIDEO_COUNT);
                Log.d(TAG, "onPageSelected: position=" + position);
            }
        });
        
        // 设置初始位置文本
        tvPosition.setText("视频 1 / " + VIDEO_COUNT);
    }
    
    /**
     * 视频Feed的适配器类 - 继承自FragmentStateAdapter
     * FragmentStateAdapter是ViewPager2推荐的Fragment适配器，替代了ViewPager的FragmentStatePagerAdapter
     */
    private static class VideoFeedAdapter extends FragmentStateAdapter {
        
        // 定义每个视频页面的背景颜色
        private final int[] COLORS = new int[] {
            Color.parseColor("#D32F2F"), // 红色
            Color.parseColor("#7B1FA2"), // 紫色
            Color.parseColor("#303F9F"), // 靛蓝色
            Color.parseColor("#388E3C"), // 绿色
            Color.parseColor("#F57C00")  // 橙色
        };
        
        /**
         * 构造方法
         * @param fragmentActivity 宿主FragmentActivity
         */
        VideoFeedAdapter(@NonNull FragmentActivity fragmentActivity) {
            super(fragmentActivity);
        }
        
        /**
         * 创建Fragment方法 - 在需要显示某个位置的页面时调用
         * @param position 位置索引
         * @return 对应位置的Fragment实例
         */
        @NonNull
        @Override
        public Fragment createFragment(int position) {
            Log.d(TAG, "createFragment: position=" + position);
            // 使用工厂方法创建VideoFragment实例
            return VideoFragment.newInstance(position + 1, COLORS[position]);
        }
        
        /**
         * 获取项目总数
         * @return 视频总数
         */
        @Override
        public int getItemCount() {
            return VIDEO_COUNT;
        }
    }
} 